/*
 * Copyright (c) 2010, 2011
 *	Open Source Technologies Ltd.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the company nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COMPANY AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */
#ifndef __BLISS64_KEYWORD_H__
#define __BLISS64_KEYWORD_H__

#ifndef __NAME_T__
#define __NAME_T__
typedef struct name_st name_t;
#endif /* !__NAME_T__ */

enum reserved_keyword
{
	rk_addressing_mode,
	rk_align,
	rk_always,
	rk_and,
	rk_begin,
	rk_bind,
	rk_bit,
	rk_builtin,
	rk_by,
	rk_byte,
	rk_case,
	rk_codecomment,
	rk_compiletime,
	rk_decr,
	rk_decra,
	rk_decru,
	rk_do,
	rk_else,
	rk_eludom,
	rk_enable,
	rk_end,
	rk_eql,
	rk_eqla,
	rk_eqlu,
	rk_eqv,
	rk_exitloop,
	rk_external,
	rk_field,
	rk_forward,
	rk_from,
	rk_geq,
	rk_geqa,
	rk_gequ,
	rk_global,
	rk_gtr,
	rk_gtra,
	rk_gtru,
	rk_if,
	rk_incr,
	rk_incra,
	rk_incru,
	rk_initial,
	rk_inrange,
	rk_iopage,
	rk_keywordmacro,
	rk_label,
	rk_leave,
	rk_leq,
	rk_leqa,
	rk_lequ,
	rk_library,
	rk_linkage,
	rk_literal,
	rk_local,
	rk_long,
	rk_lss,
	rk_lssa,
	rk_lssu,
	rk_macro,
	rk_map,
	rk_mod,
	rk_module,
	rk_neq,
	rk_neqa,
	rk_nequ,
	rk_not,
	rk_novalue,
	rk_of,
	rk_or,
	rk_otherwise,
	rk_outrange,
	rk_own,
	rk_plit,
	rk_preset,
	rk_psect,
	rk_quad,
	rk_record,
	rk_ref,
	rk_register,
	rk_rep,
	rk_require,
	rk_return,
	rk_routine,
	rk_select,
	rk_selecta,
	rk_selectone,
	rk_selectonea,
	rk_selectoneu,
	rk_selectu,
	rk_set,
	rk_show,
	rk_signed,
	rk_stacklocal,
	rk_structure,
	rk_switches,
	rk_tes,
	rk_then,
	rk_to,
	rk_undeclare,
	rk_unsigned,
	rk_until,
	rk_uplit,
	rk_volatile,
	rk_weak,
	rk_while,
	rk_with,
	rk_word,
	rk_xor,

	rk__allocation,
	rk__ascic,
	rk__ascid,
	rk__ascii,
	rk__asciz,
	rk__assign,
	rk__b,
	rk__bliss,
	rk__bliss16,
	rk__bliss32,
	rk__bliss36,
	rk__bliss64,
	rk__bpaddr,
	rk__bpunit,
	rk__bpval,
	rk__c,
	rk__char,
	rk__charcount,
	rk__count,
	rk__ctce,
	rk__d,
	rk__decimal,
	rk__declared,
	rk__e,
	rk__else,
	rk__error,
	rk__errormacro,
	rk__exactstring,
	rk__exititeration,
	rk__exitmacro,
	rk__expand,
	rk__explode,
	rk__fi,
	rk__fieldexpand,
	rk__g,
	rk__h,
	rk__identical,
	rk__if,
	rk__inform,
	rk__isstring,
	rk__length,
	rk__ltce,
	rk__message,
	rk__name,
	rk__nbits,
	rk__nbitsu,
	rk__null,
	rk__number,
	rk__o,
	rk__p,
	rk__print,
	rk__quote,
	rk__quotename,
	rk__rad50_10,
	rk__rad50_11,
	rk__ref,
	rk__remaining,
	rk__remove,
	rk__require,
	rk__sbttl,
	rk__sixbit,
	rk__size,
	rk__string,
	rk__switches,
	rk__then,
	rk__title,
	rk__unquote,
	rk__upval,
	rk__variant,
	rk__warn,
	rk__x
};

enum unreserved_keyword
{
	uk_absolute,
	uk_assembly,
	uk_binary,
	uk_bliss16,
	uk_bliss32,
	uk_bliss36,
	uk_bliss36c,
	uk_bliss64,
	uk_call,
	uk_clearstack,
	uk_code,
	uk_commentary,
	uk_concatenate,
	uk_debug,
	uk_emt,
	uk_entry,
	uk_environment,
	uk_errs,
	uk_execute,
	uk_expand,
	uk_extended,
	uk_general,
	uk_ident,
	uk_indirect,
	uk_interrupt,
	uk_iot,
	uk_jsb,
	uk_jsr,
	uk_jsys,
	uk_ka10,
	uk_kc10,
	uk_ki10,
	uk_kl10,
	uk_ks10,
	uk_language,
	uk_linkage_regs,
	uk_list,
	uk_long_relative,
	uk_lsi11,
	uk_main,
	uk_noassembly,
	uk_nobinary,
	uk_nocode,
	uk_nocommentary,
	uk_nodebug,
	uk_nodefault,
	uk_noerrs,
	uk_noexecute,
	uk_noexpand,
	uk_nolibrary,
	uk_nonexternal,
	uk_noobject,
	uk_nooptimize,
	uk_nopic,
	uk_nopreserve,
	uk_noread,
	uk_norequire,
	uk_nosafe,
	uk_noshare,
	uk_nosource,
	uk_nosymbolic,
	uk_notrace,
	uk_notused,
	uk_nounames,
	uk_nowrite,
	uk_nozip,
	uk_object,
	uk_optimize,
	uk_optlevel,
	uk_origin,
	uk_ots,
	uk_ots_linkage,
	uk_overlay,
	uk_pic,
	uk_portal,
	uk_preserve,
	uk_ps_interrupt,
	uk_pushj,
	uk_quad_relative,
	uk_read,
	uk_relative,
	uk_relocatable,
	uk_rsx_ast,
	uk_rtt,
	uk_safe,
	uk_share,
	uk_skip,
	uk_source,
	uk_stack,
	uk_standard,
	uk_standard_ots,
	uk_symblolic,
	uk_t11,
	uk_tops10,
	uk_tops20,
	uk_trace,
	uk_trap,
	uk_unames,
	uk_valuecbit,
	uk_version,
	uk_word_relative,
	uk_write,
	uk_zip
};

extern const name_t reserved_keyword_names[];
extern const name_t unreserved_keyword_names[];

#endif /* !__BLISS64_KEYWORD_H__ */
